/**
 * FireFly (2011)
 */
package com.firefly.logging;

/**
 * 日志插件实例接口
 * 
 * @version 1.0 2011-1-1
 * @author lexloo(lexloo@gmail.com)
 * @since FireFly 1.0
 */
public interface ILoggerPluginInstance {
	ILoggerPlugin getLoggerPlugin();

	/**
	 * 获取日志实例
	 * 
	 * @return 日志实例
	 */
	Logger getLogger();

	/**
	 * 实例是否支持指定的日志水平
	 * 
	 * @param level
	 *            日志水平
	 * @return 支持与否
	 */
	boolean isEnabled(Logger.Level level);

	/**
	 * 以指定水平输出日志消息
	 * 
	 * @param level
	 *            日志水平
	 * @param loggerFqcn
	 *            the fully qualified class name
	 * @param message
	 *            消息体
	 * @param params
	 *            日志信息参数，如果无参数则为 {@code null}
	 */
	void log(Logger.Level level, String loggerFqcn, Object message, Object... params);
}